//
//  UIView+ZXHelper.h
//  ShiChunTang
//
//  Created by simon on 13/11/1.
//  Copyright (c) 2013年 yinyuetai.com. All rights reserved.
//  2023.07.23 重构

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN


///注意：在约束布局中，layoutSubViews只能获取当前视图的frame,bounds，无法获取子视图的frame,bounds，获取到的子视图的bounds是CGSizeZero,所以不能用。
@interface UIView (ZXBorder)



/// 设置UIView的圆角矩形的圆角；
/// @param cornerRadius 圆角半径
- (void)zx_setBorderWithCornerRadius:(CGFloat)cornerRadius;


/**
 * @brief 设置UIView全部边框，圆角矩形的圆角。其实就是将mask遮罩应用到边框上。
 * @param cornerRadius  圆角半径;
 * @param borderWidth   边框宽度，边框会应用到圆角
 * @param borderColor  边框颜色；边框颜色默认是黑色的，如果传nil，则用clearColor赋值；
 */
- (void)zx_setBorderWithCornerRadius:(CGFloat)cornerRadius
                         borderWidth:(CGFloat)borderWidth
                         borderColor:(nullable UIColor *)borderColor;





/// 设置UIView的全部边框，圆角矩形的指定圆角处。只支持iOS11；
/// 例如：
/// if #available(iOS 11.0, *) {
/// self.titleLab?.zx_setCornerRadius(8, borderWidth: 1, borderColor: nil, maskedCorners: [CACornerMask.layerMinXMinYCorner, CACornerMask.layerMaxXMinYCorner])
/// } else {
/// };
/// @param cornerRadius 圆角半径
/// @param maskedCorners 圆角矩形的指定圆角处
/// @param borderWidth 边框宽度，边框会应用到圆角
/// @param borderColor 边框颜色
- (void)zx_setBorderWithCornerRadius:(CGFloat)cornerRadius
                       maskedCorners:(CACornerMask)maskedCorners
                         borderWidth:(CGFloat)borderWidth
                         borderColor:(nullable UIColor *)borderColor
                        API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0));



/// 设置UIView的圆角矩形的全部边框，圆角矩形的指定圆角处。 2023.07.23修改
/// @param cornerRadius 圆角半径大小
/// @param size 形状size大小
/// @param cornersType 圆角矩形的指定圆角处
/// @param borderWidth 边框宽度，边框会应用到圆角
/// @param borderColor 边框颜色
- (void)zx_setBorderWithCornerRadius:(CGFloat)cornerRadius
                          boundsSize:(CGSize)size
                     roundingCorners:(UIRectCorner)cornersType
                         borderWidth:(CGFloat)borderWidth
                         borderColor:(nullable UIColor *)borderColor;


/// 设置UIView圆形区域展示，另外区域不展示； 2023.07.23修改
/// 利用设置mask，CAShapeLayer形状区域会展示；
/// @param rect 圆形的矩形大小
- (void)zx_setBorderMaskWithCircleShapeWithBounds:(CGRect)rect;



/**
 设置圆角矩形的指定边框；圆角矩形的指定圆角处。 2023.07.23修改
 @param top top description
 @param left left description
 @param bottom bottom description
 @param right right description
 @param borderWidth 边框宽度
 @param borderColor 边框颜色
 */
- (void)zx_setBorderWithWithCornerRadius:(CGFloat)cornerRadius
                              boundsSize:(CGSize)size
                        roundingCorners:(UIRectCorner)cornersType
                               topBorder:(BOOL)top
                              leftBorder:(BOOL)left
                            bottomBorder:(BOOL)bottom
                             rightBorder:(BOOL)right
                             borderWidth:(CGFloat)borderWidth
                             borderColor:(UIColor *)borderColor;




/**
 设置添加阴影；
 注意：如果masksToBounds设置为YES,则阴影效果消失；

 @param shadowColor color 阴影颜色，一般默认都是黑色
 @param opacity 设置图层阴影不透明度；系统默认0,无阴影；如果设置1，则阴影不透明完全展示；
 @param offset 设置图层阴影偏移量；系统默认（0,-3） 如果offset是CGSizeMake(0, 0)，则4周都有阴影
 @param shadowRadius 设置阴影模糊半径shadowRadius；可以理解为阴影的宽度；系统默认3.0；
 
 The advantage of using this method is that 不用导入QuartzCore框架头；
 这不会添加阴影路径，当接收方的边界发生变化，并且在设置初始帧之后，可以调用updateShadowPathToBounds添加。
 */
- (void)zx_setShadowColor:(nullable UIColor *)shadowColor
            shadowOpacity:(CGFloat)opacity
             shadowOffset:(CGSize)offset
             shadowRadius:(CGFloat)shadowRadius;





- (void)zx_updateShadowPathToBounds:(CGRect)bounds withDuration:(NSTimeInterval)duration;





@end

NS_ASSUME_NONNULL_END
